home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / viewers / polyview / plyvw102.lha / PolyView1.02 / pvdraw.c < prev    next >
C/C++ Source or Header  |  1990-11-13  |  53KB  |  1,042 lines

  1. /* INCLUDE FILES */
  2. #include "pv.h"
  3.  
  4. int
  5. title_draw(window)
  6.     windat_t * window;
  7. /* DESCRIPTION:  Redraws the window using the NCSA logo.
  8. Returns FALSE if successful, TRUE if an error occurs.
  9. */
  10. {
  11.     long xwdim, ywdim;
  12.     long xbdim, ybdim;
  13.     long height;
  14.     int i;
  15.     static unsigned char palette[256*3] = {
  16.     255, 255, 255, 252, 252, 252, 248, 248, 248, 244, 244, 244, 
  17.     240, 240, 240, 236, 236, 236, 232, 232, 232, 228, 228, 228, 
  18.     224, 224, 224, 220, 220, 220, 216, 216, 216, 212, 212, 212, 
  19.     208, 208, 208, 204, 204, 204, 200, 200, 200, 196, 196, 196, 
  20.     192, 192, 192, 188, 188, 188, 184, 184, 184, 180, 180, 180, 
  21.     176, 176, 176, 172, 172, 172, 168, 168, 168, 164, 164, 164, 
  22.     160, 160, 160, 156, 156, 156, 152, 152, 152, 148, 148, 148, 
  23.     144, 144, 144, 140, 140, 140, 136, 136, 136, 132, 132, 132, 
  24.     128, 128, 128, 124, 124, 124, 120, 120, 120, 116, 116, 116, 
  25.     112, 112, 112, 108, 108, 108, 104, 104, 104, 100, 100, 100, 
  26.      96,  96,  96,  92,  92,  92,  88,  88,  88,  84,  84,  84, 
  27.      80,  80,  80,  76,  76,  76,  72,  72,  72,  68,  68,  68, 
  28.      64,  64,  64,  60,  60,  60,  56,  56,  56,  52,  52,  52, 
  29.      48,  48,  48,  44,  44,  44,  40,  40,  40,  36,  36,  36, 
  30.      32,  32,  32,  28,  28,  28,  24,  24,  24,  20,  20,  20, 
  31.      16,  16,  16,  12,  12,  12,   8,   8,   8,   4,   4,   4, 
  32.       0,   0,   0,  23, 202, 201, 199, 197, 198,   4, 201, 202, 
  33.      24, 202, 203, 211, 208, 204, 198, 195, 194, 197, 254,  13, 
  34.     195, 197, 190, 167, 183, 185, 191, 199, 194
  35.     };
  36.     static unsigned short ncsa_logo[] = {
  37.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  38.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  39.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  40.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  41.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  42.       7,   7,   7,   7, 769, 770,   7,   7,   7,   7,   7,   7,   7,   7, 
  43.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  44.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  45.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  46.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  47.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  48.       7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 770,   7,   7,   7, 
  49.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  50.       7,   7,   7,   7,   7,   7,   7,   7,   7, 769,   7,   7,   7,   7, 
  51.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  52.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  53.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  54.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  55.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 769,   7,   7, 
  56.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  57.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  58.       7, 769, 769,   7,   7,   7,   7,   7,   7,   7,   7, 
  59.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  60.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  61.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  62.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  63.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  64.       7,   7,   7,   7, 771, 771,   7,   7,   7,   7,   7,   7,   7,   7, 
  65.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  66.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  67.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  68.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  69.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  70.       7,   7,   7,   7,   7,   7,   7,   7,   7, 774, 772, 774,   7,   7, 
  71.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  72.       7,   7,   7,   7,   7,   7,   7, 771, 772, 770, 772,   7,   7,   7, 
  73.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 770, 770, 
  74.     776, 783, 784, 784, 780, 773, 769, 770,   7,   7,   7,   7,   7,   7, 
  75.       7,   7,   7, 798, 824, 825, 802, 776, 770, 770, 769, 769, 770, 770, 
  76.     770, 770, 770, 770, 770, 770, 770, 769, 769, 769, 769, 770, 769,   7, 
  77.       7,   7,   7,   7,   7,   7,   7,   7,   7, 771, 772, 773, 772,   7, 
  78.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  79.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  80.     774, 772, 771, 771,   7,   7,   7,   7,   7,   7,   7, 
  81.       7,   7,   7,   7,   7,   7,   7,   7, 785, 824, 831, 823, 775,   7, 
  82.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  83.       7,   7,   7,   7,   7,   7, 790, 815, 822, 824, 823, 786,   7,   7, 
  84.       7,   7,   7,   7,   7,   7,   7,   7,   7, 772, 780, 804, 825, 827, 
  85.     826, 829, 829, 830, 829, 827, 826, 825, 807, 784, 772,   7,   7, 769, 
  86.       7,   7, 778, 824, 832, 832, 831, 826, 827, 828, 829, 829, 829, 829, 
  87.     829, 828, 829, 829, 829, 829, 829, 829, 829, 828, 828, 826, 814, 792, 
  88.     775, 774,   7,   7,   7,   7,   7,   7, 772, 816, 828, 827, 816, 774, 
  89.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  90.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 778, 
  91.     820, 829, 826, 804, 774,   7, 769,   7,   7,   7,   7, 
  92.       7,   7,   7,   7,   7,   7,   7,   7, 782, 830, 832, 829, 771,   7, 
  93.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  94.       7,   7,   7,   7,   7, 774, 818, 832, 829, 832, 830, 786,   7,   7, 
  95.       7,   7,   7,   7,   7,   7,   7, 770, 790, 819, 828, 829, 832, 832, 
  96.     832, 832, 832, 832, 832, 832, 832, 832, 829, 827, 816, 785,   7,   7, 
  97.       7,   7, 786, 832, 831, 828, 832, 832, 832, 832, 832, 832, 832, 832, 
  98.     832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 831, 
  99.     828, 822, 797, 777,   7,   7, 769,   7,   7, 806, 831, 832, 828, 778, 
  100.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  101.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 795, 
  102.     831, 832, 827, 784,   7, 769, 769,   7,   7,   7,   7, 
  103.       7,   7,   7,   7,   7,   7,   7,   7, 781, 828, 832, 827, 771,   7, 
  104.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  105.       7,   7,   7,   7,   7, 796, 829, 830, 829, 832, 827, 782,   7,   7, 
  106.       7,   7,   7,   7,   7,   7, 775, 807, 827, 832, 831, 831, 832, 829, 
  107.     828, 829, 829, 829, 829, 829, 827, 829, 832, 831, 832, 824, 799, 775, 
  108.       7,   7, 776, 819, 832, 832, 832, 825, 821, 819, 815, 815, 819, 818, 
  109.     820, 820, 817, 817, 817, 817, 817, 817, 817, 820, 825, 828, 829, 829, 
  110.     832, 832, 830, 819, 792, 773,   7, 770,   7, 778, 823, 832, 829, 797, 
  111.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  112.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 772, 817, 
  113.     831, 831, 824, 771,   7, 770,   7,   7,   7,   7,   7, 
  114.       7,   7,   7,   7,   7,   7,   7,   7, 781, 829, 832, 828, 770,   7, 
  115.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  116.       7,   7, 769,   7, 776, 822, 832, 827, 831, 832, 829, 782,   7,   7, 
  117.       7,   7,   7,   7,   7, 775, 808, 832, 831, 828, 832, 829, 817, 793, 
  118.     774, 772, 772, 772, 772, 772, 775, 796, 820, 829, 829, 832, 831, 813, 
  119.     778,   7,   7, 792, 822, 825, 798, 776,   7,   7, 769,   7,   7,   7, 
  120.       7, 769,   7,   7,   7,   7,   7,   7,   7,   7, 770, 772, 773, 780, 
  121.     800, 817, 827, 832, 824, 803, 776, 769,   7,   7, 811, 830, 832, 821, 
  122.     773,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  123.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 784, 828, 
  124.     832, 829, 807, 770,   7,   7,   7,   7,   7,   7,   7, 
  125.       7,   7,   7,   7,   7,   7,   7,   7, 782, 829, 832, 828, 770,   7, 
  126.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  127.       7,   7,   7,   7, 800, 829, 828, 830, 832, 832, 831, 785,   7,   7, 
  128.       7,   7,   7,   7, 770, 804, 832, 829, 828, 832, 823, 792, 774,   7, 
  129.       7,   7,   7,   7,   7,   7,   7,   7, 777, 806, 827, 829, 830, 832, 
  130.     801, 770,   7,   7, 769, 771, 779, 790, 784,   7,   7,   7,   7,   7, 
  131.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  132.     770, 775, 788, 816, 832, 828, 800, 772,   7,   7, 790, 827, 832, 829, 
  133.     779,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  134.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 809, 831, 
  135.     832, 827, 780,   7, 769,   7,   7,   7,   7,   7,   7, 
  136.       7,   7,   7,   7,   7,   7,   7,   7, 784, 830, 832, 828, 770,   7, 
  137.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  138.       7, 769,   7, 778, 823, 831, 829, 825, 832, 832, 830, 785,   7,   7, 
  139.       7,   7,   7,   7, 792, 828, 831, 828, 832, 811, 781,   7,   7,   7, 
  140.     769,   7,   7,   7,   7,   7, 769,   7,   7, 773, 798, 828, 829, 831, 
  141.     827, 790,   7,   7,   7, 789, 821, 832, 824, 796, 778, 774, 774, 774, 
  142.     774, 774, 774, 774, 773, 772, 773, 771, 770, 770, 769, 769, 771, 769, 
  143.       7,   7,   7, 780, 806, 828, 823, 790, 770,   7, 772, 824, 832, 828, 
  144.     793,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  145.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 774, 826, 832, 
  146.     832, 825, 772,   7, 769,   7,   7,   7,   7,   7,   7, 
  147.       7,   7,   7,   7,   7,   7,   7,   7, 782, 829, 832, 828, 770,   7, 
  148.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  149.       7,   7, 770, 802, 830, 831, 820, 795, 826, 832, 828, 782,   7,   7, 
  150.       7, 769,   7, 779, 823, 832, 828, 832, 808, 775,   7, 769, 770,   7, 
  151.       7,   7,   7,   7,   7,   7,   7,   7, 771,   7, 771, 806, 831, 829, 
  152.     832, 817, 773,   7, 772, 819, 832, 832, 832, 830, 828, 829, 830, 830, 
  153.     829, 830, 830, 830, 830, 829, 830, 829, 829, 829, 829, 828, 824, 805, 
  154.     782, 776, 772,   7, 776, 805, 831, 819, 779,   7, 771, 815, 831, 832, 
  155.     816, 771,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  156.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 797, 831, 832, 
  157.     829, 804, 770,   7,   7,   7,   7,   7,   7,   7,   7, 
  158.       7,   7,   7,   7,   7,   7,   7,   7, 781, 829, 832, 828, 770,   7, 
  159.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  160.     769,   7, 785, 824, 831, 827, 793, 775, 828, 832, 829, 784,   7,   7, 
  161.       7,   7, 771, 809, 832, 828, 832, 814, 776,   7, 771, 769,   7,   7, 
  162.       7,   7,   7,   7,   7,   7,   7,   7,   7, 770,   7, 776, 813, 832, 
  163.     831, 829, 790,   7, 774, 827, 832, 827, 832, 832, 832, 832, 830, 831, 
  164.     832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 
  165.     828, 821, 804, 781,   7, 775, 809, 829, 796, 769, 769, 792, 826, 832, 
  166.     827, 777,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  167.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 772, 822, 832, 831, 
  168.     829, 779,   7, 769,   7,   7,   7,   7,   7,   7,   7, 
  169.       7,   7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 770,   7, 
  170.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  171.       7, 775, 813, 831, 832, 820, 774, 778, 831, 832, 829, 781,   7,   7, 
  172.       7,   7, 794, 829, 830, 831, 824, 780,   7, 771,   7,   7,   7,   7, 
  173.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 770,   7, 784, 828, 
  174.     832, 830, 812, 772, 772, 812, 827, 832, 832, 819, 804, 800, 797, 795, 
  175.     798, 797, 796, 796, 796, 796, 796, 796, 798, 802, 809, 820, 826, 828, 
  176.     831, 832, 829, 821, 795,   7, 779, 824, 823, 781,   7, 774, 823, 832, 
  177.     828, 792,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  178.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 779, 829, 832, 832, 
  179.     823, 773,   7, 769,   7,   7,   7,   7,   7,   7,   7, 
  180.       7,   7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 828, 770,   7, 
  181.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  182.     769, 799, 829, 831, 826, 792,   7, 783, 828, 832, 829, 778,   7,   7, 
  183.       7, 775, 823, 832, 829, 831, 796,   7,   7, 769,   7,   7,   7,   7, 
  184.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769,   7, 772, 816, 
  185.     831, 831, 826, 776,   7, 774, 795, 814, 802, 779, 772,   7,   7,   7, 
  186.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 771, 773, 777, 
  187.     796, 816, 826, 832, 823, 793, 769, 795, 827, 796,   7, 769, 810, 830, 
  188.     831, 814, 771,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  189.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 801, 829, 832, 829, 
  190.     794,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  191.       7,   7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 770,   7, 
  192.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  193.     791, 826, 831, 831, 813, 771,   7, 786, 828, 832, 829, 778,   7,   7, 
  194.       7, 793, 831, 831, 832, 824, 774,   7, 770,   7,   7,   7,   7,   7, 
  195.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 788, 
  196.     800, 805, 806, 771,   7,   7,   7, 770, 787, 810, 817, 787,   7,   7, 
  197.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  198.     769, 775, 786, 812, 832, 823, 777, 774, 826, 818, 771,   7, 789, 827, 
  199.     832, 826, 780,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  200.       7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 823, 832, 832, 826, 
  201.     773,   7, 769,   7,   7,   7,   7,   7,   7,   7,   7, 
  202.       7,   7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 770,   7, 
  203.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 772, 
  204.     818, 832, 830, 827, 786,   7,   7, 781, 829, 832, 829, 780,   7,   7, 
  205.     771, 815, 832, 830, 831, 808, 769,   7,   7,   7,   7,   7,   7,   7, 
  206.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 
  207.     771, 770, 772,   7,   7,   7,   7, 770, 817, 832, 832, 824, 809, 804, 
  208.     804, 805, 804, 801, 798, 800, 797, 797, 800, 795, 784, 774, 771, 771, 
  209.       7,   7,   7, 783, 817, 830, 796, 772, 815, 826, 774,   7, 773, 825, 
  210.     832, 828, 797, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  211.       7,   7,   7,   7,   7,   7,   7,   7,   7, 778, 827, 831, 831, 818, 
  212.     771,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  213.       7,   7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 770,   7, 
  214.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 788, 
  215.     828, 830, 832, 815, 772,   7,   7, 780, 829, 832, 829, 779,   7,   7, 
  216.     772, 827, 832, 832, 828, 786,   7,   7,   7,   7,   7,   7,   7,   7, 
  217.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  218.     769,   7,   7,   7,   7,   7,   7, 781, 830, 832, 830, 832, 832, 832, 
  219.     832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 831, 829, 826, 808, 
  220.     785, 777, 770,   7, 789, 824, 821, 773, 789, 826, 778,   7, 769, 815, 
  221.     831, 832, 827, 809, 803, 803, 800, 800, 800, 800, 801, 802, 801, 803, 
  222.     801, 803, 801, 800, 801, 802, 801, 798, 800, 819, 832, 831, 830, 793, 
  223.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  224.       7,   7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 770,   7, 
  225.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 776, 819, 
  226.     832, 830, 825, 784,   7,   7,   7, 785, 830, 832, 829, 776,   7,   7, 
  227.     782, 830, 832, 832, 825, 773,   7, 769,   7,   7,   7,   7,   7,   7, 
  228.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  229.       7, 769, 769,   7,   7, 769, 769, 784, 831, 832, 832, 832, 830, 829, 
  230.     830, 830, 829, 830, 829, 828, 830, 830, 832, 831, 830, 831, 832, 832, 
  231.     830, 821, 797, 775, 769, 798, 826, 785, 774, 826, 782,   7,   7, 793, 
  232.     830, 832, 832, 832, 830, 830, 830, 831, 832, 832, 832, 832, 831, 832, 
  233.     832, 832, 832, 832, 832, 831, 830, 829, 829, 832, 831, 832, 824, 777, 
  234.       7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  235.       7,   7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 770,   7, 
  236.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 800, 830, 
  237.     829, 831, 807, 770,   7,   7,   7, 786, 830, 832, 829, 776,   7,   7, 
  238.     800, 831, 832, 831, 808, 769,   7,   7,   7,   7,   7,   7,   7,   7, 
  239.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  240.       7,   7,   7,   7,   7, 769,   7, 775, 818, 832, 832, 823, 797, 783, 
  241.     783, 782, 779, 779, 779, 779, 781, 778, 779, 781, 787, 797, 808, 823, 
  242.     826, 832, 827, 805, 771, 777, 824, 816, 775, 825, 786, 769,   7, 774, 
  243.     826, 832, 831, 832, 832, 831, 830, 831, 832, 832, 832, 832, 832, 832, 
  244.     832, 832, 832, 832, 832, 830, 831, 832, 832, 832, 832, 831, 797,   7, 
  245.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  246.       7,   7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 828, 770,   7, 
  247.       7,   7,   7,   7,   7,   7,   7,   7,   7, 769,   7, 782, 824, 831, 
  248.     832, 817, 777,   7, 769,   7,   7, 785, 830, 832, 828, 774,   7, 769, 
  249.     818, 832, 832, 829, 787,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  250.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  251.       7,   7,   7,   7,   7,   7,   7,   7, 776, 795, 798, 776,   7,   7, 
  252.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 771, 772, 
  253.     772, 796, 824, 830, 797, 769, 799, 824, 776, 824, 782,   7,   7, 770, 
  254.     810, 831, 832, 832, 820, 811, 808, 807, 810, 811, 806, 806, 809, 809, 
  255.     809, 809, 809, 809, 807, 808, 810, 811, 832, 831, 832, 823, 774,   7, 
  256.     770,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  257.       7,   7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 770,   7, 
  258.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 771, 808, 831, 831, 
  259.     823, 785,   7, 770,   7,   7,   7, 785, 830, 832, 829, 776,   7, 769, 
  260.     826, 832, 832, 828, 775,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  261.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  262.       7,   7,   7,   7,   7,   7,   7,   7,   7, 770, 771,   7,   7, 769, 
  263.       7,   7,   7,   7,   7, 772, 787, 804, 812, 807, 789, 773,   7,   7, 
  264.       7,   7, 777, 813, 829, 783, 775, 823, 777, 821, 778,   7, 769,   7, 
  265.     786, 827, 832, 828, 800, 769, 769,   7, 769, 770, 769, 769, 770, 770, 
  266.     770, 770, 770, 770,   7, 770,   7, 780, 827, 832, 828, 804, 769,   7, 
  267.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  268.       7,   7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 828, 770,   7, 
  269.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 788, 825, 832, 829, 
  270.     797,   7, 769, 769,   7,   7,   7, 785, 830, 832, 829, 777,   7, 769, 
  271.     827, 832, 832, 828, 771,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  272.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  273.       7,   7,   7,   7,   7,   7,   7,   7, 769,   7,   7, 769,   7,   7, 
  274.       7,   7,   7,   7, 781, 811, 827, 829, 830, 829, 828, 814, 780,   7, 
  275.     769,   7,   7, 779, 820, 811, 776, 821, 779, 809, 773,   7, 770,   7, 
  276.     773, 824, 832, 832, 818, 770,   7,   7,   7,   7,   7,   7,   7,   7, 
  277.       7,   7,   7,   7,   7,   7,   7, 797, 829, 832, 826, 780,   7, 769, 
  278.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  279.       7,   7,   7,   7,   7,   7,   7,   7, 788, 830, 832, 828, 770,   7, 
  280.       7,   7,   7,   7,   7,   7,   7,   7,   7, 774, 817, 832, 832, 821, 
  281.     776,   7, 770,   7,   7,   7,   7, 785, 830, 832, 828, 776,   7, 772, 
  282.     828, 832, 832, 826, 771,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  283.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  284.       7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 769,   7,   7,   7, 
  285.       7,   7,   7, 773, 814, 832, 830, 830, 830, 829, 830, 832, 812, 775, 
  286.       7,   7, 770,   7, 787, 822, 777, 808, 788, 794, 769,   7,   7,   7, 
  287.     769, 804, 828, 832, 829, 777,   7,   7,   7,   7,   7,   7,   7,   7, 
  288.       7,   7,   7,   7,   7,   7, 772, 823, 832, 832, 824, 772,   7, 769, 
  289.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  290.       7,   7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 828, 770,   7, 
  291.       7,   7,   7,   7,   7,   7,   7,   7,   7, 794, 828, 832, 827, 793, 
  292.       7, 769,   7,   7,   7,   7,   7, 785, 830, 832, 828, 776,   7, 773, 
  293.     828, 832, 832, 819, 770,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  294.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  295.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  296.       7,   7,   7, 791, 829, 831, 827, 831, 831, 831, 827, 832, 828, 787, 
  297.       7,   7, 769,   7, 774, 820, 781, 797, 786, 777,   7,   7,   7, 769, 
  298.       7, 777, 826, 832, 828, 792,   7,   7,   7,   7,   7,   7,   7,   7, 
  299.       7,   7,   7,   7,   7,   7, 773, 828, 832, 828, 802, 769,   7,   7, 
  300.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  301.       7,   7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 770,   7, 
  302.       7,   7,   7,   7,   7,   7, 769,   7, 776, 820, 831, 831, 818, 774, 
  303.       7, 770,   7,   7,   7,   7,   7, 786, 830, 832, 829, 776,   7, 776, 
  304.     828, 832, 832, 812, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  305.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  306.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 770,   7,   7,   7, 
  307.       7,   7, 771, 814, 831, 830, 831, 830, 830, 830, 830, 831, 829, 805, 
  308.     769,   7,   7,   7, 771, 800, 789, 795, 774,   7,   7,   7,   7, 769, 
  309.       7, 772, 820, 832, 831, 813, 771,   7,   7,   7,   7,   7,   7,   7, 
  310.       7,   7,   7,   7,   7,   7, 792, 828, 832, 828, 782,   7, 769,   7, 
  311.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  312.       7,   7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 828, 770,   7, 
  313.       7,   7,   7,   7,   7,   7,   7,   7, 796, 829, 831, 826, 791,   7, 
  314.     769,   7,   7,   7,   7,   7,   7, 785, 830, 832, 829, 776,   7, 780, 
  315.     828, 832, 832, 808, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  316.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  317.       7,   7,   7,   7,   7,   7,   7,   7,   7, 772, 782, 769,   7,   7, 
  318.       7,   7, 771, 825, 832, 831, 831, 830, 830, 830, 831, 831, 832, 823, 
  319.     771,   7,   7, 769,   7, 778, 795, 792, 769,   7, 769,   7,   7,   7, 
  320.       7,   7, 792, 827, 832, 826, 777,   7,   7,   7,   7,   7,   7,   7, 
  321.       7,   7,   7,   7,   7, 770, 817, 832, 832, 824, 773,   7, 769,   7, 
  322.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  323.       7,   7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 770,   7, 
  324.       7,   7,   7,   7,   7,   7,   7, 786, 824, 831, 831, 812, 772,   7, 
  325.     769,   7,   7,   7,   7,   7,   7, 782, 829, 832, 829, 776,   7, 783, 
  326.     829, 832, 832, 808, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  327.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  328.       7,   7,   7,   7,   7,   7,   7,   7, 773, 777, 796, 769,   7,   7, 
  329.       7,   7, 770, 826, 832, 832, 831, 830, 830, 830, 832, 831, 832, 827, 
  330.     770,   7,   7,   7,   7, 771, 794, 781,   7, 769,   7,   7,   7,   7, 
  331.     769,   7, 773, 819, 832, 828, 792,   7,   7,   7,   7,   7,   7,   7, 
  332.       7,   7,   7,   7,   7, 774, 827, 832, 828, 798,   7,   7,   7,   7, 
  333.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  334.       7,   7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 828, 770,   7, 
  335.       7,   7,   7,   7,   7,   7, 775, 816, 832, 831, 824, 784,   7, 770, 
  336.       7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 829, 776,   7, 780, 
  337.     828, 832, 832, 811, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  338.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  339.       7,   7,   7,   7,   7,   7,   7, 770, 784, 774, 806, 771,   7,   7, 
  340.       7,   7, 771, 825, 832, 830, 832, 830, 830, 830, 832, 830, 832, 824, 
  341.     771,   7, 769,   7,   7, 771, 785, 771,   7,   7,   7,   7,   7,   7, 
  342.       7,   7,   7, 798, 829, 832, 815, 771,   7,   7,   7,   7,   7,   7, 
  343.       7,   7,   7,   7,   7, 796, 828, 832, 826, 776,   7, 769,   7,   7, 
  344.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  345.       7,   7,   7,   7,   7,   7,   7,   7, 788, 830, 832, 828, 770,   7, 
  346.       7,   7,   7,   7,   7,   7, 800, 830, 830, 830, 804, 769,   7, 769, 
  347.       7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 829, 776,   7, 778, 
  348.     828, 832, 832, 812, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  349.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  350.       7,   7,   7,   7,   7,   7,   7, 773, 800, 775, 815, 780,   7, 770, 
  351.       7,   7, 770, 809, 831, 830, 831, 832, 831, 832, 831, 830, 830, 803, 
  352.     769,   7,   7,   7,   7,   7, 771,   7,   7,   7,   7,   7,   7,   7, 
  353.       7, 769,   7, 777, 825, 832, 826, 778,   7,   7,   7,   7,   7,   7, 
  354.       7,   7,   7,   7, 772, 821, 832, 830, 815, 771,   7,   7,   7,   7, 
  355.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  356.       7,   7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 828, 770,   7, 
  357.       7,   7,   7,   7,   7, 781, 824, 832, 831, 823, 777,   7, 770,   7, 
  358.       7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 829, 776,   7, 773, 
  359.     827, 832, 832, 818, 770,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  360.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  361.       7,   7,   7,   7,   7, 769,   7, 777, 814, 775, 811, 802, 769, 769, 
  362.     769,   7,   7, 782, 826, 832, 829, 832, 832, 832, 829, 832, 825, 780, 
  363.       7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  364.       7,   7,   7, 771, 818, 832, 829, 794,   7,   7,   7,   7,   7,   7, 
  365.       7,   7,   7,   7, 782, 827, 832, 827, 791,   7,   7,   7,   7,   7, 
  366.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  367.       7,   7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 770,   7, 
  368.       7,   7,   7,   7, 770, 808, 832, 829, 830, 798,   7,   7,   7,   7, 
  369.       7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 774,   7, 769, 
  370.     827, 832, 832, 823, 770,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  371.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  372.       7,   7,   7,   7,   7,   7,   7, 783, 817, 770, 790, 824, 788,   7, 
  373.       7, 770,   7,   7, 801, 827, 832, 832, 832, 832, 832, 828, 799, 769, 
  374.       7,   7,   7,   7,   7,   7, 770, 769,   7,   7,   7,   7,   7,   7, 
  375.       7,   7,   7,   7, 797, 829, 832, 813, 771,   7,   7,   7,   7,   7, 
  376.       7,   7,   7, 770, 811, 831, 832, 827, 773,   7, 769,   7,   7,   7, 
  377.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  378.       7,   7,   7,   7,   7,   7,   7,   7, 787, 830, 832, 828, 770,   7, 
  379.       7,   7, 769,   7, 781, 826, 831, 832, 822, 775,   7, 770,   7,   7, 
  380.       7,   7,   7,   7,   7,   7,   7, 786, 829, 832, 829, 774,   7, 769, 
  381.     827, 832, 832, 828, 771,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  382.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  383.       7,   7,   7,   7,   7, 769, 783, 785, 805, 782, 773, 825, 822, 782, 
  384.     770,   7,   7,   7, 771, 796, 823, 826, 826, 826, 823, 800, 771,   7, 
  385.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  386.       7,   7, 769,   7, 779, 826, 832, 826, 777,   7,   7,   7,   7,   7, 
  387.       7,   7,   7, 774, 827, 832, 830, 818, 771,   7,   7,   7,   7,   7, 
  388.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  389.       7,   7,   7,   7,   7,   7,   7,   7, 791, 831, 832, 828, 770,   7, 
  390.       7,   7,   7, 772, 810, 831, 830, 828, 796,   7, 769,   7,   7,   7, 
  391.       7,   7,   7,   7,   7,   7,   7, 788, 830, 832, 828, 774,   7, 769, 
  392.     825, 832, 832, 829, 774,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  393.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  394.       7,   7,   7,   7,   7, 771, 804, 787, 797, 813, 771, 790, 827, 826, 
  395.     802, 776, 770,   7,   7,   7, 769, 771, 776, 775, 769,   7,   7,   7, 
  396.       7,   7,   7,   7,   7,   7, 772, 772,   7,   7,   7,   7,   7,   7, 
  397.       7,   7, 769,   7, 772, 819, 832, 828, 790,   7,   7,   7,   7,   7, 
  398.       7,   7,   7, 794, 830, 832, 829, 794,   7,   7,   7,   7,   7,   7, 
  399.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  400.       7,   7,   7,   7,   7,   7,   7,   7, 790, 830, 832, 828, 770,   7, 
  401.       7,   7,   7, 789, 826, 831, 832, 808, 772,   7, 769,   7,   7,   7, 
  402.       7,   7,   7,   7,   7,   7,   7, 786, 829, 832, 828, 775,   7,   7, 
  403.     811, 830, 832, 829, 779,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  404.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  405.       7,   7,   7, 769,   7, 771, 815, 788, 782, 824, 783, 769, 800, 824, 
  406.     832, 825, 808, 785, 773, 771, 769, 769, 771,   7,   7, 769, 770,   7, 
  407.       7, 769, 770,   7, 774, 800, 826, 821, 787,   7,   7,   7,   7,   7, 
  408.       7,   7,   7,   7,   7, 795, 828, 832, 815, 772,   7,   7,   7,   7, 
  409.       7,   7, 771, 819, 832, 832, 826, 776,   7, 769,   7,   7,   7,   7, 
  410.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  411.       7,   7,   7,   7,   7,   7,   7,   7, 788, 830, 832, 828, 769,   7, 
  412.       7,   7, 776, 819, 832, 831, 821, 779,   7, 770,   7,   7,   7,   7, 
  413.       7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 829, 777,   7,   7, 
  414.     795, 829, 832, 830, 795,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  415.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  416.       7,   7,   7, 769,   7, 771, 814, 798, 773, 824, 808, 773, 771, 788, 
  417.     811, 827, 832, 830, 828, 829, 830, 830, 828, 825, 826, 828, 827, 828, 
  418.     828, 825, 823, 823, 825, 831, 832, 832, 818, 774,   7,   7,   7,   7, 
  419.       7,   7,   7, 769,   7, 776, 825, 832, 826, 778,   7,   7,   7,   7, 
  420.       7,   7, 777, 828, 832, 830, 811, 770,   7,   7,   7,   7,   7,   7, 
  421.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  422.       7,   7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 828,   7,   7, 
  423.       7,   7, 797, 829, 831, 827, 791,   7, 770,   7,   7,   7,   7,   7, 
  424.       7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 829, 777,   7,   7, 
  425.     779, 828, 832, 832, 818, 771,   7,   7,   7,   7,   7,   7,   7,   7, 
  426.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  427.     769, 769,   7,   7,   7,   7, 805, 817, 773, 805, 825, 796, 771,   7, 
  428.     774, 789, 814, 827, 831, 832, 832, 832, 832, 832, 832, 832, 832, 832, 
  429.     832, 832, 832, 832, 832, 832, 828, 832, 831, 777,   7, 769,   7,   7, 
  430.       7,   7,   7,   7,   7, 771, 814, 832, 829, 799,   7,   7,   7,   7, 
  431.       7,   7, 797, 830, 832, 828, 787,   7,   7,   7,   7,   7,   7,   7, 
  432.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  433.       7,   7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 827,   7,   7, 
  434.       7, 784, 824, 832, 832, 815, 773,   7, 770,   7,   7,   7,   7,   7, 
  435.       7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 829, 777,   7,   7, 
  436.     772, 825, 832, 832, 829, 779,   7,   7,   7,   7,   7,   7,   7,   7, 
  437.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  438.       7,   7,   7,   7,   7,   7, 788, 826, 774, 777, 822, 823, 795, 775, 
  439.       7,   7, 773, 776, 787, 806, 818, 823, 827, 829, 828, 828, 828, 828, 
  440.     828, 828, 829, 828, 826, 831, 832, 832, 824, 775,   7,   7,   7,   7, 
  441.       7,   7,   7,   7,   7,   7, 791, 827, 832, 821, 774,   7,   7,   7, 
  442.       7, 771, 820, 832, 832, 825, 773,   7, 769,   7,   7,   7,   7,   7, 
  443.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  444.       7,   7,   7,   7,   7,   7,   7,   7, 788, 830, 832, 825, 770,   7, 
  445.     769, 808, 831, 832, 824, 784,   7, 770,   7,   7,   7,   7,   7,   7, 
  446.       7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 829, 777,   7,   7, 
  447.     770, 807, 830, 831, 831, 798, 769,   7,   7,   7,   7,   7,   7,   7, 
  448.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 771, 
  449.     773, 772, 771,   7,   7,   7, 772, 824, 792,   7, 797, 826, 825, 809, 
  450.     790, 773,   7,   7,   7,   7,   7,   7, 769, 769, 769, 769, 769, 769, 
  451.     769, 769, 770, 769, 774, 805, 826, 821, 794,   7,   7,   7,   7,   7, 
  452.       7,   7,   7,   7, 769,   7, 774, 824, 832, 828, 788,   7,   7,   7, 
  453.       7, 777, 828, 832, 829, 807, 770,   7,   7,   7,   7,   7,   7,   7, 
  454.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  455.       7,   7,   7,   7,   7,   7,   7,   7, 790, 830, 832, 826, 771,   7, 
  456.     780, 826, 831, 830, 810, 770,   7, 769,   7,   7,   7,   7,   7,   7, 
  457.       7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 774,   7,   7, 
  458.       7, 783, 828, 831, 832, 822, 776,   7,   7,   7,   7,   7,   7,   7, 
  459.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 771, 811, 
  460.     827, 828, 818, 774,   7,   7, 770, 821, 816, 773, 774, 809, 830, 831, 
  461.     823, 803, 780, 772,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  462.       7,   7,   7,   7,   7,   7,   7, 769, 771, 772, 773,   7,   7,   7, 
  463.       7,   7,   7,   7,   7,   7, 770, 812, 830, 831, 810, 773,   7,   7, 
  464.       7, 798, 829, 832, 828, 783,   7, 769,   7,   7,   7,   7,   7,   7, 
  465.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  466.       7,   7,   7,   7,   7,   7,   7,   7, 794, 830, 831, 828, 769, 770, 
  467.     805, 830, 831, 825, 783,   7, 770,   7,   7,   7,   7,   7,   7,   7, 
  468.       7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 774,   7,   7, 
  469.       7, 773, 818, 832, 830, 829, 790,   7,   7,   7,   7,   7,   7,   7, 
  470.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769,   7, 772, 824, 
  471.     832, 832, 821, 771,   7, 770, 769, 800, 824, 791,   7, 784, 812, 825, 
  472.     832, 832, 825, 814, 794, 779, 773, 771, 771, 770, 770, 770, 770, 770, 
  473.     770, 770, 769, 770, 770, 769, 769, 790, 821, 830, 819, 785,   7,   7, 
  474.       7,   7,   7,   7,   7,   7,   7, 790, 827, 832, 826, 782,   7,   7, 
  475.     769, 820, 832, 832, 823, 773,   7, 769,   7,   7,   7,   7,   7,   7, 
  476.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  477.       7,   7,   7,   7,   7,   7,   7,   7, 791, 827, 832, 827,   7, 795, 
  478.     828, 830, 831, 806, 770,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  479.       7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 828, 774,   7,   7, 
  480.     769,   7, 787, 824, 831, 831, 819, 779,   7, 769,   7,   7,   7,   7, 
  481.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 789, 829, 
  482.     831, 828, 803, 770,   7, 770,   7, 777, 825, 822, 783,   7, 778, 797, 
  483.     817, 826, 832, 832, 831, 830, 829, 829, 829, 829, 829, 829, 829, 829, 
  484.     829, 829, 829, 828, 828, 828, 828, 829, 832, 832, 832, 809, 772,   7, 
  485.     769,   7,   7,   7,   7, 769,   7, 774, 825, 832, 829, 797,   7,   7, 
  486.     774, 826, 832, 827, 792,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  487.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  488.       7,   7,   7,   7,   7,   7,   7,   7, 792, 829, 832, 823, 783, 820, 
  489.     832, 832, 822, 778,   7, 770,   7,   7,   7,   7,   7,   7,   7,   7, 
  490.       7,   7,   7,   7,   7,   7,   7, 785, 830, 832, 828, 774,   7,   7, 
  491.     769,   7, 769, 801, 830, 829, 830, 807, 775,   7, 769,   7,   7,   7, 
  492.       7,   7,   7,   7,   7,   7,   7,   7,   7, 770,   7, 774, 816, 832, 
  493.     831, 829, 782,   7,   7,   7, 769, 770, 805, 832, 814, 781,   7,   7, 
  494.     776, 789, 812, 824, 828, 832, 832, 832, 832, 832, 832, 832, 832, 832, 
  495.     832, 832, 832, 832, 832, 832, 832, 832, 832, 827, 832, 824, 775,   7, 
  496.       7,   7,   7,   7,   7,   7,   7, 770, 811, 830, 832, 820, 774,   7, 
  497.     797, 827, 832, 824, 773,   7, 770,   7,   7,   7,   7,   7,   7,   7, 
  498.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  499.       7,   7,   7,   7,   7,   7,   7,   7, 793, 830, 832, 832, 824, 832, 
  500.     830, 829, 796,   7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  501.       7,   7,   7,   7,   7,   7,   7, 786, 830, 832, 828, 774,   7,   7, 
  502.       7, 770,   7, 776, 818, 832, 828, 828, 805, 773,   7,   7,   7,   7, 
  503.       7,   7,   7,   7,   7,   7,   7,   7, 769,   7, 770, 802, 831, 829, 
  504.     832, 823, 774,   7, 769,   7, 769,   7, 777, 814, 832, 816, 786, 773, 
  505.       7,   7, 771, 772, 778, 789, 797, 808, 812, 812, 812, 813, 816, 817, 
  506.     820, 820, 817, 820, 821, 821, 822, 826, 832, 832, 832, 808, 770,   7, 
  507.       7,   7,   7,   7,   7,   7,   7,   7, 787, 827, 832, 828, 780, 770, 
  508.     821, 832, 828, 804, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  509.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  510.       7,   7,   7,   7,   7,   7,   7,   7, 795, 831, 831, 832, 832, 828, 
  511.     832, 815, 774,   7, 770,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  512.       7,   7,   7,   7,   7,   7,   7, 789, 830, 832, 828, 774,   7,   7, 
  513.       7,   7, 769,   7, 788, 823, 832, 829, 829, 809, 781, 769,   7,   7, 
  514.       7,   7,   7,   7,   7,   7,   7,   7,   7, 772, 796, 828, 830, 830, 
  515.     829, 796,   7, 769,   7,   7,   7, 769,   7, 785, 819, 832, 822, 803, 
  516.     783, 773,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  517.       7,   7,   7, 769, 769, 769, 770, 787, 817, 827, 812, 780,   7,   7, 
  518.       7,   7,   7,   7,   7,   7, 769,   7, 773, 824, 832, 829, 792, 777, 
  519.     825, 832, 826, 778,   7, 769,   7,   7,   7,   7,   7,   7,   7,   7, 
  520.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  521.       7,   7,   7,   7,   7,   7,   7,   7, 792, 829, 832, 832, 828, 831, 
  522.     826, 786,   7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  523.       7,   7,   7,   7,   7,   7,   7, 792, 831, 832, 828, 773,   7,   7, 
  524.       7,   7, 769, 769,   7, 792, 827, 832, 828, 831, 826, 805, 777, 769, 
  525.       7,   7,   7,   7,   7,   7,   7, 769, 781, 812, 830, 830, 827, 832, 
  526.     813, 774,   7, 769,   7,   7,   7,   7, 770,   7, 782, 813, 832, 832, 
  527.     823, 815, 792, 775, 770,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  528.       7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 785, 801, 799, 775, 
  529.       7,   7,   7,   7,   7,   7,   7,   7, 769, 806, 829, 831, 817, 805, 
  530.     827, 832, 824, 772,   7, 769,   7,   7,   7,   7,   7,   7,   7,   7, 
  531.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  532.       7,   7,   7,   7,   7,   7,   7,   7, 790, 829, 832, 832, 829, 832, 
  533.     813, 771,   7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  534.       7,   7,   7,   7,   7,   7,   7, 790, 830, 832, 828, 771,   7,   7, 
  535.       7,   7,   7, 769,   7, 771, 799, 829, 832, 829, 831, 831, 825, 814, 
  536.     788, 774, 770, 770, 770, 771, 788, 814, 826, 831, 829, 829, 832, 823, 
  537.     782,   7, 770,   7,   7,   7,   7,   7, 769, 770,   7, 781, 809, 826, 
  538.     832, 832, 829, 825, 819, 805, 791, 783, 782, 782, 781, 778, 778, 778, 
  539.     778, 778, 777, 775, 777, 776, 775, 773, 771, 786, 820, 832, 829, 808, 
  540.     773,   7,   7,   7,   7,   7,   7, 769,   7, 786, 829, 832, 830, 831, 
  541.     832, 829, 803, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  542.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  543.       7,   7,   7,   7,   7,   7,   7, 770, 797, 830, 832, 830, 832, 825, 
  544.     791,   7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  545.       7,   7,   7,   7,   7,   7, 770, 793, 830, 832, 828, 772,   7,   7, 
  546.       7,   7,   7,   7, 769,   7, 772, 797, 824, 832, 832, 832, 832, 832, 
  547.     828, 829, 829, 829, 829, 828, 829, 832, 832, 832, 832, 832, 823, 793, 
  548.       7, 769,   7,   7,   7,   7,   7,   7,   7,   7, 770,   7, 773, 795, 
  549.     819, 828, 832, 832, 832, 832, 831, 830, 831, 831, 831, 830, 830, 830, 
  550.     830, 830, 830, 829, 830, 830, 828, 829, 828, 830, 832, 832, 832, 827, 
  551.     778,   7,   7,   7,   7,   7,   7, 769,   7, 776, 826, 832, 830, 830, 
  552.     832, 830, 784,   7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  553.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  554.       7,   7,   7,   7,   7, 769,   7, 769, 798, 832, 832, 832, 830, 796, 
  555.     770,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  556.       7,   7,   7,   7, 769,   7, 769, 794, 831, 832, 829, 773,   7, 769, 
  557.       7,   7,   7,   7,   7, 769,   7,   7, 778, 807, 827, 829, 831, 832, 
  558.     832, 832, 832, 832, 832, 832, 832, 832, 832, 830, 825, 800, 776,   7, 
  559.     769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769,   7,   7, 
  560.     775, 785, 808, 825, 828, 829, 831, 832, 832, 832, 832, 832, 832, 832, 
  561.     832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 831, 832, 831, 
  562.     779,   7, 769,   7,   7,   7,   7,   7, 769, 769, 799, 831, 832, 830, 
  563.     832, 825, 775,   7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  564.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  565.       7,   7,   7,   7,   7,   7,   7, 769, 793, 825, 828, 828, 813, 775, 
  566.       7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  567.       7,   7,   7,   7,   7,   7,   7, 788, 823, 828, 822, 777,   7, 769, 
  568.       7,   7,   7,   7,   7,   7, 769, 769,   7, 771, 774, 784, 809, 827, 
  569.     828, 827, 829, 829, 829, 828, 827, 828, 815, 788, 775, 769,   7, 769, 
  570.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 769, 
  571.       7,   7, 771, 773, 773, 779, 786, 793, 797, 797, 797, 797, 797, 797, 
  572.     797, 797, 797, 798, 801, 802, 802, 805, 806, 816, 829, 832, 832, 821, 
  573.     774,   7, 769,   7,   7,   7,   7,   7, 769,   7, 776, 816, 829, 828, 
  574.     824, 801, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  575.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  576.       7,   7,   7,   7,   7,   7,   7,   7, 769, 773, 772, 772, 772,   7, 
  577.     769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  578.       7,   7,   7,   7,   7,   7,   7,   7, 774, 772, 774,   7,   7,   7, 
  579.       7,   7,   7,   7,   7,   7,   7,   7, 770,   7,   7,   7, 770, 772, 
  580.     771, 772, 778, 781, 779, 775, 772, 772, 772,   7,   7,   7, 770,   7, 
  581.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  582.     769, 769,   7,   7,   7,   7,   7,   7, 769, 769, 769, 769, 769, 769, 
  583.     769, 769, 769,   7, 769, 769, 769, 770, 769, 773, 791, 815, 815, 785, 
  584.       7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7, 773, 772, 773, 
  585.     773, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  586.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  587.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  588.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  589.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  590.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769,   7,   7,   7, 
  591.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769,   7,   7,   7, 
  592.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  593.       7,   7,   7, 769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  594.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 772, 773,   7, 
  595.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  596.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  597.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  598.       7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 769, 769,   7,   7, 
  599.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  600.       7,   7,   7,   7,   7,   7,   7,   7, 769, 770, 769,   7,   7,   7, 
  601.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 
  602.       7,   7,   7,   7,   7,   7,   7, 769, 769,   7,   7,   7,   7,   7, 
  603.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  604.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  605.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769,   7,   7, 769, 
  606.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 769, 769, 769, 
  607.     769,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  608.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  609.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  610.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  611.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  612.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  613.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  614.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  615.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  616.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 770, 769,   7, 
  617.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  618.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 
  619.       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7
  620.     };
  621.     int xldim = 151;
  622.     int yldim = sizeof(ncsa_logo)/(sizeof(short)*151);
  623.  
  624.  
  625.     /* Quit if the window is NULL */
  626.     if (window == NULL)
  627.         return TRUE;
  628.  
  629.     /* Set our attention on the window. */
  630.     winset((long) window->win_id);
  631.  
  632.     /* Install logo palette */
  633.     for (i = 0; i < LOGO_SIZE; i++) {
  634.         mapcolor(LOGO_BASE+i,
  635.              palette[i*3], palette[i*3+1], palette[i*3+2]);
  636.     }
  637.  
  638.     /* Clear the window */
  639.     color(WHITE);
  640.     clear();
  641.  
  642.     /* Get the size of the window and put the logo in it */
  643.     getsize(&xwdim, &ywdim);
  644.     height = getheight();
  645.     xbdim = 1.1 * strwidth(NCSA_STR);
  646.     ybdim = yldim + 5.0 * height;
  647.     rectwrite((xwdim-xldim)/2, (ywdim+ybdim)/2-yldim+1,
  648.           (xwdim+xldim)/2-1, (ywdim+ybdim)/2,
  649.           ncsa_logo);
  650.  
  651.     /* Draw border around the title */
  652.     color(RED);
  653.     for (i = 0; i < 3; i++) {
  654.         recti(i,i, xwdim-i-1, ywdim-i-1);
  655.     }
  656.  
  657.     /* Put in the text that follows */
  658.     color(BLACK);
  659.     ywdim = (ywdim+ybdim)/2 - yldim - height;
  660.     gprintf((xwdim-strwidth(NCSA_STR))/2, ywdim, NCSA_STR, 0.0);
  661.     ywdim -= height;
  662.     gprintf((xwdim-strwidth(UIUC_STR))/2, ywdim, UIUC_STR, 0.0);
  663.     ywdim -= height*2;
  664.     gprintf((xwdim-strwidth(PV_STR))/2, ywdim, PV_STR, 0.0);
  665.  
  666.     swapbuffers();
  667.  
  668.  
  669.     /* At this point we're always successful */
  670.     return FALSE;
  671. }
  672.  
  673.  
  674.  
  675.  
  676.  
  677. int
  678. image_draw(window)
  679.     windat_t * window;
  680. /* DESCRIPTION:  Redraws the window using image data associated with
  681. it.  Returns FALSE if successful, TRUE if an error occurs.
  682. */
  683. {
  684.     image_t * image;
  685.     long count;
  686.     float * x;
  687.     float * y;
  688.     float * z;
  689.     int * connect_p;
  690.     register int vertex;
  691.     float * color_p;
  692.     int i;
  693.     float min[DIMS];
  694.     float min_color;
  695.     float max[DIMS];
  696.     float max_color;
  697.     float range[DIMS];
  698.     char title[256];
  699.  
  700.  
  701.     /* Set our attention on the window. */
  702.     winset((long) window->win_id);
  703.     reshapeviewport();
  704.  
  705.  
  706.     /* Initialize variables */
  707.     image = (image_t *) window->data;
  708.     x = (float *) image->p[X].ds->value;
  709.     y = (float *) image->p[Y].ds->value;
  710.     z = (float *) image->p[Z].ds->value;
  711.     connect_p = (int *) image->connect.ds->value;
  712.     color_p = (float *) image->color.ds->value;
  713.     min_color = (float) image->color.ds->min;
  714.     max_color = (float) image->color.ds->max;
  715.     for (i = 0; i < DIMS; i++) {
  716.         max[i] = image->p[i].ds->max;
  717.         min[i] = image->p[i].ds->min;
  718.         /* Calculate the amount to adjust the box by (+/- 5%)*/
  719.         range[i] = (max[i] - min[i]) * 0.05;
  720.     }
  721.  
  722.  
  723.     /* Set up the Z-buffer for this pass */
  724.     zbuffer(TRUE);
  725.     lsetdepth(0x0, 0x7FFFFF);
  726.     lshaderange(BACKGROUND+1, FOREGROUND-1, 0x0, 0x7FFFFF);
  727.     zfunction(ZF_LEQUAL);
  728.     czclear(BACKGROUND, 0x7FFFFF);
  729.  
  730.  
  731.     /* Render the image */
  732.     pushmatrix();
  733.  
  734.     /* Use either a perspective or orthographic projection */
  735.     if (current.ortho) {
  736.         ortho(-max_width*1.1,max_width*1.1,
  737.               -max_width*1.1,max_width*1.1,
  738.               0.1,1000);
  739.         scale(scaling, scaling, 1.0);
  740.     }
  741.     else {
  742.         perspective(view_angle, 1.0, 0.1, 1000);
  743.     }
  744.  
  745.     lookat(from[X], from[Y], from[Z],
  746.            at[X], at[Y], at[Z], twist);
  747.  
  748.     /* Set up appropriate shading model */
  749.     if (current.constant)
  750.         shademodel(FLAT);
  751.     else
  752.         shademodel(GOURAUD);
  753.  
  754.     /* Turn on depth-cueing if requested */
  755.     depthcue(current.depth);
  756.  
  757.  
  758.     color(FOREGROUND);
  759.     /* Draw coordinate system */
  760.     if (current.axes || current.box) {
  761.         /* Adjust the min/max values */
  762.         for (i = 0; i < DIMS; i++) {
  763.             min[i] -= range[i];
  764.             max[i] += range[i];
  765.         }
  766.  
  767.         /* Draw the bounding cube */
  768.         if (current.box) {
  769.             bgnline();
  770.             v3f(p3f(min[X],min[Y],min[Z]));
  771.             v3f(p3f(max[X],min[Y],min[Z]));
  772.             v3f(p3f(max[X],min[Y],max[Z]));
  773.             v3f(p3f(min[X],min[Y],max[Z]));
  774.             v3f(p3f(min[X],min[Y],min[Z]));
  775.             v3f(p3f(min[X],max[Y],min[Z]));
  776.             v3f(p3f(max[X],max[Y],min[Z]));
  777.             v3f(p3f(max[X],max[Y],max[Z]));
  778.             v3f(p3f(min[X],max[Y],max[Z]));
  779.             v3f(p3f(min[X],max[Y],min[Z]));
  780.             endline();
  781.  
  782.             bgnline();
  783.             v3f(p3f(max[X],min[Y],min[Z]));
  784.             v3f(p3f(max[X],max[Y],min[Z]));
  785.             endline();
  786.  
  787.             bgnline();
  788.             v3f(p3f(max[X],min[Y],max[Z]));
  789.             v3f(p3f(max[X],max[Y],max[Z]));
  790.             endline();
  791.  
  792.             bgnline();
  793.             v3f(p3f(min[X],min[Y],max[Z]));
  794.             v3f(p3f(min[X],max[Y],max[Z]));
  795.             endline();
  796.         }
  797.         else {
  798.             bgnline();
  799.             v3f(p3f(max[X],min[Y],min[Z]));
  800.             v3f(p3f(min[X],min[Y],min[Z]));
  801.             v3f(p3f(min[X],min[Y],max[Z]));
  802.             v3f(p3f(min[X],min[Y],min[Z]));
  803.             v3f(p3f(min[X],max[Y],min[Z]));
  804.             endline();
  805.         }
  806.     }
  807.  
  808.  
  809.     /* Draw the labels only if told to */
  810.     if ((current.axes || current.box) && (current.labels)) {
  811.         cmov(max[X],min[Y],min[Z]);
  812.         charstr(image->p[X].ds->name);
  813.         cmov(min[X],max[Y],min[Z]);
  814.         charstr(image->p[Y].ds->name);
  815.         cmov(min[X],min[Y],max[Z]);
  816.         charstr(image->p[Z].ds->name);
  817.     }
  818.  
  819.  
  820.     /* Draw the optional "at point" star */
  821.     if (current.at_point) {
  822.         bgnline();
  823.         v3f(p3f(at[X]-0.1,at[Y],at[Z]));
  824.         v3f(p3f(at[X]+0.1,at[Y],at[Z]));
  825.         endline();
  826.         bgnline();
  827.         v3f(p3f(at[X],at[Y]-0.1,at[Z]));
  828.         v3f(p3f(at[X],at[Y]+0.1,at[Z]));
  829.         endline();
  830.         bgnline();
  831.         v3f(p3f(at[X],at[Y],at[Z]-0.1));
  832.         v3f(p3f(at[X],at[Y],at[Z]+0.1));
  833.         endline();
  834.         cmov(at[X], at[Y], at[Z]);
  835.         charstr("AT");
  836.     }
  837.     
  838.         
  839.     /* Draw the points */
  840.     if (current.points) {
  841.         color(FOREGROUND);
  842.         bgnpoint();
  843.         for (count = image->p[X].ds->size; count>0; count--) {
  844.  
  845.             if (color_p != NULL)
  846.                 color(MAP_COLOR(min_color,
  847.                       VALINC(color_p),
  848.                       max_color));
  849.  
  850.             v3f(p3f(VALINC(x),VALINC(y),VALINC(z)));
  851.  
  852.             if (!(count & 255)) {
  853.                 endpoint();
  854.                 bgnpoint();
  855.             }
  856.         }
  857.         endpoint();
  858.     }
  859.  
  860.  
  861.     /* Draw the solid polygons unless we are told otherwise */
  862.     else if (current.polygons) {
  863.         for (count = image->connect.ds->size; count > 0;
  864.              count -= nvert) {
  865.             if (current.constant) {
  866.             if (nvert == 3) {
  867.                 color(MAP_COLOR(min_color,
  868.                   (VALOFF(color_p,(*(connect_p)-1)) +
  869.                   VALOFF(color_p,(*(connect_p+1)-1)) +
  870.                   VALOFF(color_p,(*(connect_p+2)-1)))
  871.                   / 3.0,
  872.                   max_color));
  873.             }
  874.             else {
  875.                 color(MAP_COLOR(min_color,
  876.                   (VALOFF(color_p,(*(connect_p)-1)) +
  877.                   VALOFF(color_p,(*(connect_p+1)-1)) +
  878.                   VALOFF(color_p,(*(connect_p+2)-1)) +
  879.                   VALOFF(color_p,(*(connect_p+3)-1)))
  880.                   / 4.0,
  881.                   max_color));
  882.             }
  883.             }
  884.             else if (color_p == NULL)
  885.             color(FOREGROUND);
  886.  
  887.             bgnpolygon();
  888.             for (i = nvert; i > 0; i--) {
  889.             vertex = *(connect_p++)-1;
  890.             if (vertex == -1) break;
  891.  
  892.             if ((color_p != NULL) && !current.constant) {
  893.                 color(MAP_COLOR(min_color,
  894.                     VALOFF(color_p,vertex),
  895.                     max_color));
  896.             }
  897.  
  898.             v3f(p3f(VALOFF(x,vertex),VALOFF(y,vertex),
  899.                 VALOFF(z,vertex)));
  900.             }
  901.             endpolygon();
  902.         }
  903.     }
  904.  
  905.  
  906.     /* Draw overlay lines if they were requested and if we just drew */
  907.     /* polygons, or regular lines if we're just rendering the data as */
  908.     /* lines. */
  909.     if (current.lines ||
  910.         (current.outlines && current.polygons)) {
  911.         x = (float *) image->p[X].ds->value;
  912.         y = (float *) image->p[Y].ds->value;
  913.         z = (float *) image->p[Z].ds->value;
  914.         connect_p = (int *) image->connect.ds->value;
  915.         if (current.lines)
  916.             color_p = (float *) image->color.ds->value;
  917.         else {    /* We're drawing outline of polygons */
  918.             color_p = NULL;
  919.  
  920.             /* Shift these lines slightly forward so that */
  921.             /* they show up in from of the actual */
  922.             /* polygons that have already been drawn. */
  923.             popmatrix();
  924.             pushmatrix();
  925.  
  926.             /* Use perspective or orthographic projection */
  927.             if (current.ortho) {
  928.                 ortho(-max_width*1.1,max_width*1.1,
  929.                       -max_width*1.1,max_width*1.1,
  930.                       0.1,1000);
  931.                 scale(scaling, scaling, 1.0);
  932.             }
  933.             else {
  934.                 perspective(view_angle, 1.0, 0.1, 1000);
  935.             }
  936.             translate(0.0, 0.0, 0.01);
  937.  
  938.             lookat(from[X], from[Y], from[Z],
  939.                    at[X], at[Y], at[Z], twist);
  940.         }
  941.  
  942.         /* Set to FOREGROUND and draw the lines */
  943.         color(FOREGROUND);
  944.         for (count = image->connect.ds->size; count > 0;
  945.              count -= nvert) {
  946.             bgnclosedline();
  947.             for (i = nvert; i > 0; i--) {
  948.             vertex = *(connect_p++)-1;
  949.             if (vertex == -1) break;
  950.     
  951.             if ((color_p != NULL) && !current.constant)
  952.                 color(MAP_COLOR(min_color,
  953.                       VALOFF(color_p,vertex),
  954.                       max_color));
  955.  
  956.             v3f(p3f(VALOFF(x,vertex),VALOFF(y,vertex),
  957.                 VALOFF(z,vertex)));
  958.             }
  959.             endclosedline();
  960.         }
  961.     }
  962.  
  963.     popmatrix();
  964.  
  965.     /* Update the window's status and modify the title, if necessary */
  966.     window->redrawn = TRUE;
  967.     if (window->animated) {
  968.                 sprintf(title, "%s:%s", ((image_t *) window->data)->fn,
  969.                         ((image_t *) window->data)->group);
  970.                 wintitle(title);
  971.         window->animated = FALSE;
  972.     }
  973.  
  974.     /* Show the work we've done and return*/
  975.     swapbuffers();
  976.     return FALSE;
  977. }
  978.  
  979.  
  980. int
  981. palette_draw(window)
  982.     windat_t * window;
  983. /* DESCRIPTION:  Redraws the window using image data to draw a palette.
  984. Returns FALSE if successful, TRUE if an error occurs.
  985. */
  986. {
  987.     double minval, maxval;
  988.  
  989.     /* Quit if the window is NULL */
  990.     if (window == NULL)
  991.         return TRUE;
  992.  
  993.     /* Set our attention on the window. */
  994.     winset((long) window->win_id);
  995.  
  996.     /* Clear the window (switch buffers) */
  997.     color(BACKGROUND);
  998.     clear();
  999.  
  1000.     /* If there is no image structure, we cannot get scale info */
  1001.     if (window->data == NULL) {
  1002.         return TRUE;
  1003.     }
  1004.     else {
  1005.         /* If there is no color table, the min and max */
  1006.         /* values:  set them to zero (we should not even */
  1007.         /* be here).  Otherwise, get the min and max values */
  1008.         /* from the dataset. */
  1009.         if (((image_t *)window->data)->color.name[0] == '\0') {
  1010.             minval = 0.0;
  1011.             maxval = 0.0;
  1012.         }
  1013.         else {
  1014.             minval = ((image_t *)
  1015.                   window->data)->color.ds->min;
  1016.             maxval = ((image_t *)
  1017.                   window->data)->color.ds->max;
  1018.             bgnpolygon();
  1019.                 color(MAP_COLOR(minval,minval,maxval));
  1020.                 v2i(p2i(81,11));
  1021.                 v2i(p2i(PALETTE_X-11,11));
  1022.                 color(MAP_COLOR(minval,maxval,maxval));
  1023.                 v2i(p2i(PALETTE_X-11,PALETTE_Y-11));
  1024.                 v2i(p2i(81,PALETTE_Y-11));
  1025.             endpolygon();
  1026.         }
  1027.         color(FOREGROUND);
  1028.         gprintf(0, 10, "%-8.2e", minval);
  1029.         gprintf(0, PALETTE_Y-10, "%-8.2e", maxval);
  1030.     }
  1031.  
  1032.     /* Draw a border around the colormap and display scale */
  1033.     color(FOREGROUND);
  1034.     recti(80, 10, PALETTE_X-10, PALETTE_Y-10);
  1035.  
  1036.     swapbuffers();
  1037.  
  1038.  
  1039.     /* At this point we're always successful */
  1040.     return FALSE;
  1041. }
  1042.